home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
latex209
/
contrib
/
misc
/
cd.sty
< prev
next >
Wrap
Text File
|
1993-04-01
|
6KB
|
140 lines
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cut Here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% cd.sty - Commutative diagram macros modified from AmSTeX 3-Mar-89
% Intended as a LaTeX style file. Darrel Hankerson (Bitnet: hank@auducvax)
%\catcode`\@=11
\def\ssize{\scriptstyle}
\newdimen\ex@
\ex@.2326ex
\def\vspace@{\def\vspace##1{\noalign{\vskip##1\relax}}}
\def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
\let\ampersand@\relax
\newdimen\bigaw@
\newdimen\minaw@
\minaw@11.11128\ex@
\newdimen\minCDaw@
\minCDaw@2.5pc
\newif\ifCD@
\def\minCDarrowwidth#1{\relax\ifmmode\ifinner\onlydmatherr@\minCDarrowwidth
\else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
\def\CD{\bgroup\catcode`\@=\active %\catcode added for LaTeX
\vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
\CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@
\lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
&\hfill$\m@th##$\hfill\cr}
\def\endCD{\cr\egroup\egroup\egroup}
\def\cd#1{\csname cd\string#1\endcsname}
\def\cddef#1{\expandafter\def\csname cd\string#1\endcsname}
\cddef.{\relax\ifmmode&&\else\leavevmode.\spacefactor3000 \fi}
\cddef\rightarrow#1#2{\harrow@{#1}{#2}\rightarrowfill} \cddef>{\cd\rightarrow}
\cddef\leftarrow#1#2{\harrow@{#1}{#2}\leftarrowfill} \cddef<{\cd\leftarrow}
\def\harrow@#1#2#3{\ampersand@\setbox\z@\hbox{$\ssize
\;\;{#1}\;$}\setbox\@ne\hbox{$\ssize\;\;{#2}\;$}\setbox\tw@
\hbox{$#2$}\ifCD@
\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
\ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
\ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
\ifCD@\hskip.5em\fi
\ifdim\wd\tw@>\z@
\mathrel{\mathop{\hbox to\bigaw@{#3}}\limits^{#1}_{#2}}\else
\mathrel{\mathop{\hbox to\bigaw@{#3}}\limits^{#1}}\fi
\ifCD@\hskip.5em\fi\ampersand@}
\cddef\uparrow#1#2{\llap{$\vcenter{\hbox
{$\ssize#1$}}$}\Big\uparrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\cddef\downarrow#1#2{\llap{$\vcenter{\hbox
{$\ssize#1$}}$}\Big\downarrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\cddef=#1#2{\ampersand@\setbox\z@\hbox{$\ssize
\;{#1}\;\;$}\setbox\@ne\hbox{$\ssize\;{#2}\;\;$}\setbox\tw@
\hbox{$#2$}\ifCD@
\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
\ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
\ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
\ifCD@\hskip.5em\fi
\ifdim\wd\tw@>\z@
\mathrel{\mathop{\vbox{\hrule width\bigaw@\vskip3\ex@\hrule width
\bigaw@}}\limits^{#1}_{#2}}\else
\mathrel{\mathop{\vbox{\hrule width\bigaw@\vskip3\ex@\hrule width
\bigaw@}}\limits^{#1}}\fi
\ifCD@\hskip.5em\fi\ampersand@}
\cddef|#1#2{\llap{$\vcenter{\hbox
{$\ssize#1$}}$}\Big\vert\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\cddef\|#1#2{\llap{$\vcenter{\hbox
{$\ssize#1$}}$}\Big\vert\Big\vert\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\def\pretend#1\haswidth#2{\setbox\z@\hbox{$\scriptstyle{#2}$}\hbox
to\wd\z@{\hfill$\scriptstyle{#1}$\hfill}}
\cddef\updownarrows#1#2{\llap{$\vcenter{\hbox{$\ssize#1$}}$}
\Big\uparrow\Big\downarrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\cddef\downuparrows#1#2{\llap{$\vcenter{\hbox{$\ssize#1$}}$}
\Big\downarrow\Big\uparrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
\cddef\rightleftarrows#1#2{\harrows@{#1}{#2}\rightarrowfill\leftarrowfill}
\cddef\leftrightarrows#1#2{\harrows@{#1}{#2}\leftarrowfill\rightarrowfill}
\def\harrows@#1#2#3#4{\ampersand@\setbox\z@\hbox{$\ssize
\;{#1}\;\;$}\setbox\@ne\hbox{$\ssize\;{#2}\;\;$}\setbox\tw@
\hbox{$#2$}\ifCD@
\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
\ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
\ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
\ifCD@\hskip.5em\fi
\ifdim\wd\tw@>\z@
\mathrel{\mathop{\harrowsfill@#3#4}\limits^{#1}_{#2}}\else
\mathrel{\mathop{\harrowsfill@#3#4}\limits^{#1}}\fi
\ifCD@\hskip.5em\fi\ampersand@}
\def\harrowsfill@#1#2{\stackrel{\raisebox{0pt}[2\ex@][0pt]{\hbox
to\bigaw@{#1}}}{\raisebox{-1\ex@}[0pt][0pt]{\hbox to \bigaw@{#2}}}}
%\endinput % End here if AmSTeX @-syntax not needed.
%%%%% The following code adds the AmSTeX @-syntax %%%%%
%\newlinechar=`\^^J
\def\err@#1{\errmessage{AmS-TeX error: #1}}
\newhelp\athelp@
{Only certain combinations beginning with @ make sense to me.^^J
Perhaps you wanted \string\@\space for a printed @?^^J
I've ignored the character or group after @.}
\def\futureletnextat@{\futurelet\next\at@}
{\catcode`\@=\active
\lccode`\Z=`\@ \lccode`\I=`\I \lowercase
{\gdef@{\expandafter\csname futureletnextatZ\endcsname}\expandafter
\gdef\csname atZ\endcsname
{\ifcat\noexpand\next a\def\next{\csname atZZ\endcsname}\else
\ifcat\noexpand\next0\def\next{\csname atZZ\endcsname}\else
\ifcat\noexpand\next\relax\def\next{\csname atZZZ\endcsname}\else
\def\next{\csname atZZZZ\endcsname}\fi\fi\fi\next}
\expandafter\gdef\csname atZZ\endcsname#1{\expandafter
\ifx\csname #1Zat\endcsname\relax\def\next
{\errhelp\expandafter=\csname athelpZ\endcsname
\csname errZ\endcsname{Invalid use of \string@}}\else
\def\next{\csname #1Zat\endcsname}\fi\next}
\expandafter\gdef\csname atZZZ\endcsname#1{\expandafter
\ifx\csname \string#1ZZat\endcsname\relax\def\next
{\errhelp\expandafter=\csname athelpZ\endcsname
\csname errZ\endcsname{Invalid use of \string@}}\else
\def\next{\csname \string#1ZZat\endcsname}\fi\next}
\expandafter\gdef\csname atZZZZ\endcsname#1{\errhelp
\expandafter=\csname athelpZ\endcsname
\csname errZ\endcsname{Invalid use of \string@}}}}
\def\atdef@#1{\expandafter\def\csname #1@at\endcsname}
\def\atdef@@#1{\expandafter\def\csname \string#1@@at\endcsname}
\newhelp\defahelp@{If you typed \string\define\space cs instead of
\string\define\string\cs\space^^J
I've substituted an inaccessible control sequence so that your^^J
definition will be completed without mixing me up too badly.^^J
If you typed \string\define{\string\cs} the inaccessible control sequence^^J
was defined to be \string\cs, and the rest of your^^J
definition appears as input.}
\newhelp\defbhelp@{I've ignored your definition, because it might^^J
conflict with other uses that are important to me.}
\atdef@.{\cd.} % AmSTeX @-format
\atdef@>#1>#2>{\cd\rightarrow{#1}{#2}}
\atdef@<#1<#2<{\cd\leftarrow{#1}{#2}}
\atdef@ A#1A#2A{\cd\uparrow{#1}{#2}}
\atdef@ V#1V#2V{\cd\downarrow{#1}{#2}}
\atdef@|{\Big\Vert&&}
\atdef@@\vert{\Big\Vert&&}
\atdef@={&\hskip.5em\mathrel
{\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
\minCDaw@}}\hskip.5em&}
%\catcode`\@=\active
\endinput